package com.test.hanlp.participle.service;

import com.test.hanlp.participle.po.CustomTermPo;

import java.util.List;
import java.util.Map;

/**
 * @Package: com.test.hanlp.participle.service
 * @ClassName IWordSegmentationService
 * @Description: 词根服务接口
 * @Author: ky.zhang
 * @Date 2024/7/16 18:42
 * @Version v1.0
 **/
public interface IWordSegmentationService {

  /**
   * @Method: segment <br>
   * @Param:
   * @param text <br>
   * @Return: java.util.Map<java.lang.String, java.lang.String> <br>  
   * @Description：<br>分词
   * @Author： ky.zhang<br>
   * @Date： 2024/7/17 15:48 <br>
   * @Version： V1.0<br>
   */
  Map<String, String> segment(String text);

  /**
   * @Method: addHanlpCustomDictionary <br>
   * @Param:
   * @param word <br>
   * @Return: boolean <br>  
   * @Description：添加自定义词典<br>
   * @Author： ky.zhang<br>
   * @Date： 2024/7/17 15:49 <br>
   * @Version： V1.0<br>
   */
  boolean addHanlpCustomDictionary(String word);

  /**
   * @Method: removeHanlpCustomDictionary <br>
   * @Param:
   * @param key <br>
   * @Return: boolean <br>  
   * @Description：移除自定义词典<br>
   * @Author： ky.zhang<br>
   * @Date： 2024/7/17 15:49 <br>
   * @Version： V1.0<br>
   */
  boolean removeHanlpCustomDictionary(String key);

  /**
   * @Method: queryCustomDictionary <br>
   * @Param:  <br>
   * @Return: java.lang.String <br>  
   * @Description：查询所有自定义词典<br>
   * @Author： ky.zhang<br>
   * @Date： 2024/7/17 15:49 <br>
   * @Version： V1.0<br>
   */
  String queryCustomDictionary();

  /**
   * @Method: queryTerms <br>
   * @Param:  <br>
   * @Return: java.lang.String <br>
   * @Description：查询所有自定义术语<br>
   * @Author： ky.zhang<br>
   * @Date： 2024/7/17 15:49 <br>
   * @Version： V1.0<br>
   */
  String queryTerms();

  /**
   * @Method: addTerm <br>
   * @Param:
   * @param word
   * @param replacement <br>
   * @Return: boolean <br>
   * @Description：添加自定义术语<br>
   * @Author： ky.zhang<br>
   * @Date： 2024/7/17 15:50 <br>
   * @Version： V1.0<br>
   */
  boolean addTerm(String word, String replacement,String abbreviation);

  /**
   * @Method: removeTerm <br>
   * @Param:
   * @param word <br>
   * @Return: boolean <br>
   * @Description：删除自定义术语<br>
   * @Author： ky.zhang<br>
   * @Date： 2024/7/17 15:50 <br>
   * @Version： V1.0<br>
   */
  boolean removeTerm(String word);

  List<CustomTermPo> segment1(String text);
}
